<?php
// +----------------------------------------------------------------------
// | ThinkPHP
// +----------------------------------------------------------------------
// | Copyright (c) 2008 http://thinkphp.cn All rights reserved.
// +----------------------------------------------------------------------
// | Licensed ( http://www.apache.org/licenses/LICENSE-2.0 )
// +----------------------------------------------------------------------
// | Author: liu21st <liu21st@gmail.com>
// +----------------------------------------------------------------------
// $Id$

/**
 +----------------------------------------------------------
 * 语言检查
 * 检查浏览器支持语言，并自动加载语言包
 +----------------------------------------------------------
 * @access private
 +----------------------------------------------------------
 * @return void
 +----------------------------------------------------------
 */
function checkLanguage()
{
	if(C('LANG_SWITCH_ON')) {
		// 使用语言包功能
		$defaultLang = C('DEFAULT_LANGUAGE');
		//检测浏览器支持语言
		if(isset($_GET[C('VAR_LANGUAGE')])) {
			// 有在url 里面设置语言
			$langSet = $_GET[C('VAR_LANGUAGE')];
			// 记住用户的选择
			Cookie::set('language',$langSet,time()+360000);
		}elseif ( Cookie::is_set('language') ) {
			// 获取上次用户的选择
			$langSet = Cookie::get('language');
		}else {
			if(C('AUTO_DETECT_LANG') && isset($_SERVER['HTTP_ACCEPT_LANGUAGE'])) {
				// 启用自动侦测浏览器语言
				preg_match('/^([a-z\-]+)/i', $_SERVER['HTTP_ACCEPT_LANGUAGE'], $matches);
				$langSet = $matches[1];
				Cookie::set('language',$langSet,time()+360000);
			}else{
				// 采用系统设置的默认语言
				$langSet = $defaultLang;
			}
		}

		// 定义当前语言
		define('LANG_SET',$langSet);
		if(file_exists(TEMP_PATH.MODULE_NAME.'_'.LANG_SET.'_lang.php')) {
			// 加载语言包缓存文件
			L(include TEMP_PATH.MODULE_NAME.'_'.LANG_SET.'_lang.php');
		}else{
			// 加载框架语言包
			if (file_exists(THINK_PATH.'/Lang/'.LANG_SET.'.php')){
				L(include THINK_PATH.'/Lang/'.LANG_SET.'.php');
			}else{
				L(include THINK_PATH.'/Lang/'.$defaultLang.'.php');
			}

			// 读取项目（公共）语言包
			if (file_exists(LANG_PATH.LANG_SET.'/common.php'))
				L(include LANG_PATH.LANG_SET.'/common.php');
			else
				L(include LANG_PATH.$defaultLang.'/common.php');

			// 读取当前模块的语言包
			if (file_exists(LANG_PATH.LANG_SET.'/'.strtolower(MODULE_NAME).'.php'))
				L(include LANG_PATH.LANG_SET.'/'.strtolower(MODULE_NAME).'.php');

			// 写入语言包缓存文件
			$content  = "<?php\nreturn ".var_export(L(),true).";\n?>";
			file_put_contents(TEMP_PATH.MODULE_NAME.'_'.LANG_SET.'_lang.php',$content);
		}
	}else{
		// 不使用语言包功能，仅仅加载框架语言文件
		L(include THINK_PATH.'/Lang/'.C('DEFAULT_LANGUAGE').'.php');
	}
	return ;
}
Tag::add('app_run','checkLanguage');
?>